package cn.tedu.epidemic.webapi.mapper;

import cn.tedu.community.commons.pojo.notice.entity.Notice;
import cn.tedu.community.commons.pojo.user.dto.UserForGotPassDTO;
import cn.tedu.community.commons.pojo.user.entity.*;
import cn.tedu.community.commons.pojo.user.vo.UserCurrentVO;
import cn.tedu.community.commons.pojo.user.vo.UserListVO;
import cn.tedu.community.commons.pojo.user.vo.UserVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/***
 * 用户Mapper
 */
@Repository
public interface UserMapper {
    //用户注册
    int userReg(UserInfo userInfo);

    //通过用户名和手机号统计数量
    int countByNameOrPhone(@Param("userName") String userName, @Param("userPhone") String userPhone);

    //通过用户名查询密码查看用户名是否存在
    UserVO selectByName(String userName);

    /**
     * 获取当前用户登录信息
     */
    UserCurrentVO selectCurrentById(Long id);

    /**
     * 下列统计不是当前用户的数量（用于更新用户信息）
     */
    int countByNameAndNotId(@Param("username") String username,@Param("id")Long id);
    int countByEmailAndNotId(@Param("email") String email,@Param("id")Long id);
    int countByIdentityAndNotId(@Param("identity") String identity,@Param("id")Long id);
    int countByPhoneAndNotId(@Param("phone") String phone,@Param("id")Long id);

    /**
     * 完善用户信息
     */
    int update(UserInfo userInfo);

    /**
     * 通过id修改密码（用于修改密码）
     */
    int updatePassById(Long id,String password);

    /**
     * 通过id查看密码(用于修改密码)
     */
    String encodePass(Long id);

    /**
     * 通过手机号修改密码（用于忘记密码）
     */
    int updatePassByPhone(UserForGotPassDTO forGotPassDTO);

    /**
     * 展示返乡人员列表
     */
    List<UserListVO> isReturnPeopleList();

    /**
     * 展示非返乡人员列表
     */
    List<UserListVO> NotReturnPeopleList();

    /**
     * 查询用户名或姓名展示列表
     */
    List<UserListVO> ListByUsernameOrName(String usernameOrName);
}
